<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			// 在正则表达式中，有一些特殊字符，
			// 每一个字符都带有不同的含义，这些字符就是元字符

			//点字符 '.'，可以匹配除了换行之外任意单个字符
			// 转义字符： \n \\ \' \" \t \?
			var reg = /a.b/;
			var str = 'axb'; //true
			var str = 'awvb'; //flase
			var str = 'a\nb'; //false
			console.log(reg.test(str));

			//星字符 '*'，X*代表X字符出现0个或者多个
			var reg = /a*b/;
			var str = 'b'; //true
			var str = 'ab'; //true
			var str = 'aaaab'; //true
			console.log(reg.test(str));

			//加字符 '+'，X+代表匹配X字符1个或者多个
			var reg = /a+b/;
			var str = 'ab'; //true
			var str = 'aaaab'; //true
			console.log(reg.test(str));

			//问号 '?'，X?代表匹配X字符0个或者1个
			var reg = /a?b/;
			var str = 'b'; //true
			var str = 'ab'; //true
			console.log(reg.test(str));

			//大括号 '{}'，表示匹配字符多少次
			// {n}精确匹配n次；{n,}匹配n次以上；{n,m}匹配n-m次
			// * 与 {0,} 相等。
			// + 与 {1,} 相等。
			// ? 与 {0,1} 相等。

			// []表示一个字符区间，表示这个位置可以是本区间中的任意一个字符。一个[]表示一个字的位置
			var reg = /[123xyz]ab/; //匹配2-6的任意一个数字
			var str = '1ab'; //true
			var str = '5ab'; //false
			console.log(reg.test(str));

			// []还可以写unicode编码中的一段区间，两个字符之间以-相连，能够匹配其中任意一个字符
			// [0-9]表示是一个数字 [a-z]表示一个小写字母 [A-Z]表示一个大写字母

			//表示大小写字母或者数字
			var reg = /[A-Za-z0-9]ab/;
			var str = 'A2ab'; //true
			console.log(reg.test(str));

			// 用 [^ ] 包含一系列字符，则能够匹配其中字符之外的任意一个字符
			// （注意：这里指的前面不是最前面）
			var reg = /[^a-z]ab/;
			var str = '~ab'; //true
			var str = '1ab'; //true
			console.log(reg.test(str));

			//^在最前面表示以什么开始  $在最后面表示以什么结束
			var reg = /^[a-z]ab[0-9]$/; //以小写字母开始，以数字结束
			var str = 'xab1'; //true
			var str = 'ab'; //false
			console.log(reg.test(str));

			/*
			 * \w：代表数字 字母 和 下划线  等价于[0-9a-zA-Z_]
			 * \W：代表和\w相反  等价于[^0-9a-zA-Z_]
			 * \d：代表数字  等价于[0-9]
			 * \D：和\d相反  等价于[^0-9]
			 */

			// 手机号
			var telReg = /^1[3456789]\d{9}$/;
			console.log(telReg.test(15093251310));

			var emailReg = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
			console.log(emailReg.test('123@qq.com'));


  
		</script>
	</body>
</html>
